home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / yase.arc / CRT.ASM < prev    next >
Assembly Source File  |  1986-12-13  |  3KB  |  96 lines

  1. ******************************************************************
  2. * COPYRIGHT (C) 1986 by Donald Krantz and James Stanley
  3. * - Note: This is a real, live, actual, registered copyright,
  4. *   and should be treated as such. This source code is from
  5. *   the book "68000 Assembly Language", Krantz and Stanley,
  6. *   Addison-Wesley Publishing Company, Reading, MA, 1986.
  7. *   Permission granted by the authors for non-commercial use
  8. *   in programs released to the public domain, as long as this
  9. *   copyright notice remains attached and visible.
  10. *
  11. ****************************************************************
  12. * CRT INTERFACE Routines - PRO68, CP/M68K, BIOS Rev 1.8,
  13. * hosted on Leading Edge PC / PRO-68
  14. * Count on all calls trashing D0. 
  15. *
  16. * _CRT_CURSOR
  17. * This function sets the host cursor to an (X,Y) position. 
  18. * Calling sequence: Push Y offset, then X offset, then call.
  19. * X and Y are binary numbers, offset zero, word length. 
  20. *
  21. * _CRT_CLS
  22. * This function clears the host crt screen. No parameters.
  23. *
  24. * _CRT_PUT
  25. * This function dumps the next character typed directly to the
  26. * CRT. Calling sequence: Push the character as the low byte of
  27. * a word, then call.
  28. *
  29. * _CRT_GET
  30. * This function returns the next character typed at the console,
  31. * without echo. Character is in low byte of D0.W
  32. *
  33. * _KEYHIT
  34. * This function returns non-zero in D0.W if a character is 
  35. * waiting for input from the console.
  36. *
  37. *****************************************************************
  38.  
  39.     xdef    _crt_cls,_crt_cursor,_crt_put,_getkey,_keyhit
  40.  
  41. _crt_cls:
  42.     move.w    d1,-(a7)    * Save caller's D1
  43.     move.w    #$0006,d0    * CP/M Direct I/O call
  44.     move.w    #$001A,d1    * Clear Screen
  45.     trap    #2        * Call CP/M
  46.     move.w    (a7)+,d1    * Restore caller's D1
  47.     rts
  48. *****************************************************************
  49. _crt_cursor:
  50.     move.l    d1,-(a7)    * Save caller's D1
  51.     move.w    #$0006,d0    * CP/M Direct I/O call
  52.     move.w    #$001B,d1    * ESCape
  53.     trap    #2        * Call CP/M
  54.     move.w    #$0006,d0    * CP/M Direct I/O call
  55.     move.w    #$003D,d1    * Set Cursor
  56.     trap    #2        * Call CP/M
  57.     move.w    #$0006,d0    * CP/M Direct I/O call
  58.     move.b    11(a7),d1    * Row Address 
  59.     ext.w    d1        * sign extend
  60.     add.w    #$20,d1        * offset by 32
  61.     trap    #2        * Call CP/M
  62.     move.w    #$0006,d0    * CP/M Direct I/O call
  63.     move.b    9(a7),d1    * Column Address 
  64.     ext.w    d1        * sign extend
  65.     add.w    #$20,d1        * offset by 32
  66.     trap    #2        * Call CP/M
  67.     move.l    (a7)+,d1    * Restore caller's D1 
  68.     rts
  69. *****************************************************************
  70. _crt_put:
  71.     move.l    d1,-(a7)    * Save caller's D1
  72.     move.w    #$0006,d0    * CP/M direct I/O call
  73.     move.w    8(a7),d1    * character to output
  74.     trap    #2        * Call CP/M
  75.     move.l    (a7)+,d1    * Restore caller's D1
  76.     rts
  77. *****************************************************************
  78. _getkey:
  79.     move.w    d1,-(a7)    * Save caller's D1
  80.     move.w    #$0006,d0    * CP/M direct I/O call
  81.     move.w    #$00FF,d1    * Console input flag
  82.     trap    #2        * Call CP/M
  83.     move.w    (a7)+,d1    * Restore caller's D1
  84.     rts
  85. *****************************************************************
  86. _keyhit:
  87.     move.w    d1,-(a7)    * Save caller's D1
  88.     move.w    #$0006,d0    * CP/M direct I/O call
  89.     move.w    #$00FE,d1    * Console status flag
  90.     trap    #2        * Call CP/M
  91.     move.w    (a7)+,d1    * Restore caller's D1
  92.     rts
  93.  
  94.     end
  95.